[Looker] running_totalを下から算出もしくは逆から計算 #looker
Lookerのmeasure typeやテーブル計算で利用できるrunning_totalですが、計算はソート順に上から累計を計算します。
そのため、running_totalの値自体は日付の古い順から足していきたいが、表示としては新しい日付を先頭で表示させたい場合、一工夫必要になります。
今回は、昇順日付で出した累計を降順日付で可視化しても、値の計算方向を維持する(下から足算していく)方法をご紹介します。
running_total
指定した数値列の累計を出します。
reverse running_total
今回はこちらの記事の方法で、running_totalを逆転させてみます。
下の図の累計を、日付のソートを降順にしても維持します。
確認のため、何もしないで日付のソートを降順にしたのがこちらです。
見事にソート順に累計が出ています。
早速上記の記事に載っている計算式を適用してみます。
見事、逆転できました!
念のため、昇順の時と降順の時の値を比べてみましたが、問題ありませんでした!
可視化の際に、累計の行は表示させたくないので、列名横のギアマークから「ビジュアリゼーションで非表示にする」を選択します。
VISUALISATIONには累計の行が表示されなくなりました。
おまけ
どんな計算をしているのか、式を見ただけでは理解が出来なかったので、分解して表計算に出してみました。
reverse running_totalの計算式はこちらです:
if(row()=1 # 行番号が1かどうか? # yesの場合 , sum(measured_value) # noの場合 , sum(measured_value) - offset(running_total, -1)
if文はif(yesno_expression, value_if_yes, value_if_no))
でyesno_expressionの式に対して合致している場合にはvalue_if_yesを、合致しない場合にはvalue_if_noの値を返します。
row()
は、現在の行番号を返します。なので、上記計算式の1行目は、その行が1行目かどうかを聞いています。
まずは、行番号が1かどうか?を確認してみます。
1行目だけがYesと出ました。
そして、running_totalの1行目は対象行の総和のため、1行目ならば累計対象の行の総和を表示させています。
2行目以降は、降順で出したrunning_totalを1行offsetしたものを累計対象の総和から引けばいいと言う算段です。